﻿using Credinka.Ayni.GEN.UTL;
using Credinka.Ayni.SEA.EN;
using Credinka.Ayni.SEA.RN;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class RegistrarMenu : System.Web.UI.Page
{
    private enMenu oenMenu = new enMenu();
    private rnMenu ornMenu = new rnMenu();
    private enLog oenLog;
    private rnLog ornLog;

    private rnDescripcion ornDescripcion;

    private enFormulario oenFormulario = new enFormulario();
    private rnFormulario ornFormulario = new rnFormulario();

    string codigo = string.Empty;
    string opcion = string.Empty;

    #region Métodos

    private enMenu ObtenerMenu()
    {
        oenMenu.IdMenu = int.Parse(hdfMenu.Value);
        return ornMenu.Obtener(oenMenu);
    }

    private void CargarEstado()
    {
        ornDescripcion = new rnDescripcion();
        ddlEstado.DataSource = ornDescripcion.ListarEstado();
        ddlEstado.DataTextField = "Descripcion";
        ddlEstado.DataValueField = "CodigoElemento";
        ddlEstado.DataBind();
    }

    private void CargarSistema()
    {
        ornDescripcion = new rnDescripcion();
        ddlSistema.DataSource = ornDescripcion.ListarSistema();
        ddlSistema.DataTextField = "Descripcion";
        ddlSistema.DataValueField = "CodigoElemento";
        ddlSistema.DataBind();
    }

    private void CargarFormulario()
    {
        ornFormulario = new rnFormulario();
        ddlFormulario.DataSource = ornFormulario.Listar();
        ddlFormulario.DataTextField = "Nombre";
        ddlFormulario.DataValueField = "IdFormulario";
        ddlFormulario.DataBind();
        ddlFormulario.Items.Insert(0, new ListItem("No Aplica", "0"));
    }

    private void Grabar()
    {
        if (opcion.Equals("modificar"))
        {
            oenMenu.Nombre = txtNombre.Value;
            oenMenu.Descripcion = txtDescripcion.Value;
            oenMenu.CodigoSistema = ObtenerMenu().CodigoSistema;
            oenMenu.CodigoEstado = int.Parse(ddlEstado.SelectedValue);
            oenMenu.IdFormulario = int.Parse(ddlFormulario.SelectedValue);
            oenMenu.Orden = int.Parse(txtOrden.Value);
            oenMenu.AudNombreUsuarioModificacion = utlAuditoria.ObtenerUsuarioDominio();
            oenMenu.AudIPModificacion = utlAuditoria.ObtenerDireccionIP();
            oenMenu.AudMacModificacion = utlAuditoria.ObtenerDireccionMAC();
            int IdMenu = ornMenu.Modificar(oenMenu);
            if (IdMenu != 0)
            {
                StringBuilder sb = new StringBuilder();
                sb.Append(@"<script language='javascript'>");
                sb.Append(@"var lbl =  AbrirModal('330', '210', true, false, '#confirmacion', false);");
                sb.Append(@"$('#confirmacion').css('display', 'block');");
                sb.Append(@"</script>");
                ClientScript.RegisterStartupScript(this.GetType(), "JSScript", sb.ToString());
            }
            else
            {
                dvAlerta2.InnerHtml = "El nombre del menú ya se encuentra registrado en la base de datos.";
                fijo.Attributes.CssStyle.Add("height", "50px");
                dvAlerta2.Attributes.CssStyle.Add("display", "block");
            }
        }
        else
        {
            if (hdfMenu.Value != string.Empty)
                oenMenu.Contenedor = int.Parse(hdfMenu.Value);
            else
                oenMenu.Contenedor = 0;
            oenMenu.Nombre = txtNombre.Value;
            oenMenu.Descripcion = txtDescripcion.Value;
            oenMenu.Orden = int.Parse(txtOrden.Value);
            oenMenu.CodigoSistema = int.Parse(ddlSistema.SelectedValue);
            oenMenu.CodigoEstado = int.Parse(ddlEstado.SelectedValue);
            oenMenu.AudNombreUsuarioCreacion = utlAuditoria.ObtenerUsuarioDominio();
            oenMenu.AudIPCreacion = utlAuditoria.ObtenerDireccionIP();
            oenMenu.AudMacCreacion = utlAuditoria.ObtenerDireccionMAC();
            oenMenu.IdFormulario = int.Parse(ddlFormulario.SelectedValue);
            int IdMenu = ornMenu.Registrar(oenMenu);
            RegistrarLog();

            if (IdMenu != 0)
            {
                StringBuilder sb = new StringBuilder();
                sb.Append(@"<script language='javascript'>");
                sb.Append(@"var lbl =  AbrirModal('330', '210', true, false, '#confirmacion', false);");
                sb.Append(@"$('#confirmacion').css('display', 'block');");
                sb.Append(@"</script>");
                ClientScript.RegisterStartupScript(this.GetType(), "JSScript", sb.ToString());
            }
            else
            {
                dvAlerta2.InnerHtml = "El nombre del menú ya se encuentra registrado en la base de datos.";
                fijo.Attributes.CssStyle.Add("height", "50px");
                dvAlerta2.Attributes.CssStyle.Add("display", "block");
            }
        }
    }

    private void RegistrarLog()
    {
        oenLog = new enLog();
        ornLog = new rnLog();
        enUsuario oenUsuario = (enUsuario)Session["obe_Usuario"];
        oenLog.IdUsuario = oenUsuario.IdUsuario;
        oenLog.NombreUsuario = oenUsuario.NombreUsuario;
        oenLog.NombreCompleto = oenUsuario.NombreCompleto;
        oenLog.AudIpCreacion = utlAuditoria.ObtenerDireccionIP();
        oenLog.AudMacCreacion = utlAuditoria.ObtenerDireccionMAC();
        oenLog.AudFechaCreacion = DateTime.Now;
        oenLog.Cargo = oenUsuario.entDescripcion.Descripcion.ToString();
        oenLog.Mensaje = string.Empty;
        oenLog.Operacion = utlConstante.TipoOperacionRegistro;
        oenLog.Agencia = Session["NombreOficina"].ToString();
        oenLog.Seguimiento = btnGrabar.Text;

        //Registrar Log
        ornLog.Registrar(oenLog);
    }

    #endregion

    #region Eventos

    protected void Page_Load(object sender, EventArgs e)
    {
        codigo = Page.Request.QueryString["codigo"].ToString();
        opcion = Page.Request.QueryString["opcion"].ToString();
        if (!Page.IsPostBack)
        {
            CargarEstado();
            CargarSistema();
            CargarFormulario();
            hdfMenu.Value = codigo;
            ddlSistema.Enabled = true;

            if (hdfMenu.Value != string.Empty)
            {
                ddlSistema.Enabled = false;
                oenMenu = ObtenerMenu();
                ddlSistema.SelectedValue = oenMenu.entDescripcion.CodigoElemento.ToString();
                lblMenuPadre.Text = oenMenu.Nombre;

                if (opcion.Equals("modificar"))
                {
                    txtNombre.Value = oenMenu.Nombre;
                    txtDescripcion.Value = oenMenu.Descripcion;
                    txtOrden.Value = oenMenu.Orden.ToString();
                    ddlEstado.SelectedValue = oenMenu.CodigoEstado.ToString();
                    ddlFormulario.SelectedValue = oenMenu.IdFormulario.ToString();
                }
            }
        }
    }

    #endregion

    protected void btnSi_Click(object sender, EventArgs e)
    {
        Grabar();
    }
}